home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 7 / Apprentice-Release7.iso / Environments / PowerLisp 2.01 / PowerLisp 2.01 ƒ / Library / defpackage.lisp < prev    next >
Lisp/Scheme  |  1996-05-17  |  1KB  |  41 lines

  1. ;;;
  2. ;;;        PowerLisp 2.0
  3. ;;;        Copyright © 1996 Roger Corman.  All rights reserved.
  4. ;;;
  5.  
  6. ;
  7. ;    File:        defpackage.lisp
  8. ;    Contents:    defpackage implementation for PowerLisp.
  9. ;
  10.  
  11. (in-package :common-lisp)
  12. (provide :defpackage)
  13.  
  14. (defmacro defpackage (name &rest options)
  15.     `(eval-when (:load-toplevel :compile-toplevel :execute)
  16.         (let ((package (find-package ',name)))
  17.             (if (null package)
  18.                 (setq package (make-package ',name)))
  19.             (dolist (opt ',options)
  20.                 (if (not (consp opt))
  21.                     (error "Invalid defpackage option--should be a list: ~A~%"
  22.                         opt))
  23.                 (ecase (car opt)
  24.                     (:size nil)        ;; ignore this for now
  25.                     (:nicknames (rename-package ',name ',name (cdr opt)))
  26.                     (:shadow (shadow (cdr opt) ',name))
  27.                     (:shadowing-import-from (shadowing-import (cdr opt) ',name))
  28.                     (:use (use-package (cdr opt) ',name))
  29.                     (:import-from (import (cdr opt) ',name))
  30.                     (:intern (dolist (sym (cdr opt))
  31.                                 (intern sym ',name)))
  32.                     (:export (export (cdr opt) ',name))))
  33.                 package)))
  34.  
  35.  
  36.  
  37.  
  38.  
  39.  
  40.  
  41.